package com.smile.service.entity.device.property;

import com.alibaba.fastjson2.annotation.JSONField;

public class DroneTaskData {

    /**
     * 机场任务状态
     */
    @JSONField(name = "flighttask_step_code")
    private int flighttaskStepCode;

    /**
     * 媒体文件上传细节
     */
    @JSONField(name = "media_file_detail")
    private MediaFileDetail mediaFileDetail;

    /**
     * 图传链路
     */
    @JSONField(name = "wireless_link")
    private WirelessLink wirelessLink;

    // 嵌套类定义
    public static class MediaFileDetail {

        /**
         * 待上传数量
         */
        @JSONField(name = "remain_upload")
        private int remainUpload;

        // Getter & Setter
        public int getRemainUpload() {
            return remainUpload;
        }

        public void setRemainUpload(int remainUpload) {
            this.remainUpload = remainUpload;
        }

        @Override
        public String toString() {
            return "MediaFileDetail{" +
                    "remainUpload=" + remainUpload +
                    '}';
        }
    }

    public static class WirelessLink {
        @JSONField(name = "4g_freq_band")
        private double g4FreqBand;

        @JSONField(name = "4g_gnd_quality")
        private int g4GndQuality;

        @JSONField(name = "4g_link_state")
        private int g4LinkState;

        @JSONField(name = "4g_quality")
        private int g4Quality;

        @JSONField(name = "4g_uav_quality")
        private int g4UavQuality;

        @JSONField(name = "dongle_number")
        private int dongleNumber;

        @JSONField(name = "link_workmode")
        private int linkWorkmode;

        @JSONField(name = "sdr_freq_band")
        private double sdrFreqBand;

        @JSONField(name = "sdr_link_state")
        private int sdrLinkState;

        @JSONField(name = "sdr_quality")
        private int sdrQuality;

        // Getters & Setters
        public double getG4FreqBand() {
            return g4FreqBand;
        }

        public void setG4FreqBand(double g4FreqBand) {
            this.g4FreqBand = g4FreqBand;
        }

        public int getG4GndQuality() {
            return g4GndQuality;
        }

        public void setG4GndQuality(int g4GndQuality) {
            this.g4GndQuality = g4GndQuality;
        }

        public int getG4LinkState() {
            return g4LinkState;
        }

        public void setG4LinkState(int g4LinkState) {
            this.g4LinkState = g4LinkState;
        }

        public int getG4Quality() {
            return g4Quality;
        }

        public void setG4Quality(int g4Quality) {
            this.g4Quality = g4Quality;
        }

        public int getG4UavQuality() {
            return g4UavQuality;
        }

        public void setG4UavQuality(int g4UavQuality) {
            this.g4UavQuality = g4UavQuality;
        }

        public int getDongleNumber() {
            return dongleNumber;
        }

        public void setDongleNumber(int dongleNumber) {
            this.dongleNumber = dongleNumber;
        }

        public int getLinkWorkmode() {
            return linkWorkmode;
        }

        public void setLinkWorkmode(int linkWorkmode) {
            this.linkWorkmode = linkWorkmode;
        }

        public double getSdrFreqBand() {
            return sdrFreqBand;
        }

        public void setSdrFreqBand(double sdrFreqBand) {
            this.sdrFreqBand = sdrFreqBand;
        }

        public int getSdrLinkState() {
            return sdrLinkState;
        }

        public void setSdrLinkState(int sdrLinkState) {
            this.sdrLinkState = sdrLinkState;
        }

        public int getSdrQuality() {
            return sdrQuality;
        }

        public void setSdrQuality(int sdrQuality) {
            this.sdrQuality = sdrQuality;
        }

        @Override
        public String toString() {
            return "WirelessLink{" +
                    "g4FreqBand=" + g4FreqBand +
                    ", g4GndQuality=" + g4GndQuality +
                    ", g4LinkState=" + g4LinkState +
                    ", g4Quality=" + g4Quality +
                    ", g4UavQuality=" + g4UavQuality +
                    ", dongleNumber=" + dongleNumber +
                    ", linkWorkmode=" + linkWorkmode +
                    ", sdrFreqBand=" + sdrFreqBand +
                    ", sdrLinkState=" + sdrLinkState +
                    ", sdrQuality=" + sdrQuality +
                    '}';
        }
    }

    // Getters & Setters
    public int getFlighttaskStepCode() {
        return flighttaskStepCode;
    }

    public void setFlighttaskStepCode(int flighttaskStepCode) {
        this.flighttaskStepCode = flighttaskStepCode;
    }

    public MediaFileDetail getMediaFileDetail() {
        return mediaFileDetail;
    }

    public void setMediaFileDetail(MediaFileDetail mediaFileDetail) {
        this.mediaFileDetail = mediaFileDetail;
    }

    public WirelessLink getWirelessLink() {
        return wirelessLink;
    }

    public void setWirelessLink(WirelessLink wirelessLink) {
        this.wirelessLink = wirelessLink;
    }

    @Override
    public String toString() {
        return "DroneTaskData{" +
                "flighttaskStepCode=" + flighttaskStepCode +
                ", mediaFileDetail=" + mediaFileDetail +
                ", wirelessLink=" + wirelessLink +
                '}';
    }
}